/**
 * 大数加法
 *
 * 描述
 * 以字符串的形式读入两个数字，编写一个函数计算它们的和，以字符串形式返回。
 *
 * 数据范围：
 * s.length,t.length≤100000，字符串仅由'0'~‘9’构成
 *
 * 要求：
 * 时间复杂度
 * O(n)
 */

/**
 * 加法我们从后向前遍历字符串按位相加就好了, 用一个标志标记是否需要进位, 最后在
 * 将整个数组逆序输出就可以了
 * 时间复杂度 : O(n)
 * 空间复杂度 : O(n)
 */

public class Main {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 计算两个数之和
     * @param s string字符串 表示第一个整数
     * @param t string字符串 表示第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {

        int m = s.length() - 1, n = t.length() - 1;

        // 字符串拼接函数
        StringBuffer res = new StringBuffer();

        // 进位标志
        int tmp = 0;

        // 三个全为 0 就可以不判断了
        while (m >= 0 || n >= 0 || tmp!= 0) {

            // 按位转化为 整数
            int a = 0, b = 0;

            if (m >= 0) {
                a = s.charAt(m--) - '0';
            }
            if (n >= 0) {
                b = t.charAt(n--) - '0';
            }

            // 相加
            int x = a + b;

            // 加是否进位
            x += tmp;

            // 更新进位
            tmp = x / 10;

            // 更新这个位置
            x %= 10;

            // 添加
            res.append(x);
        }

        // 逆序
        res.reverse();

        // 转为字符串
        return res.toString();
    }
}